/**
 * 联系人相关接口
 * 
 */

const express = require('express')
const router = express.Router()
const pool = require('../../db/db')
const Response = require('../../utils/ResponseData')

/**
 * 新增联系人接口
 * url: http://localhost:3000/contact/add
 * method: post
 * params: req.body
 */
router.post('/add', (req, res, next) => {
    // 获取前端信息
    let { name, tel, isDefault } = req.body
    // 获取前端传递的user_id
    let { uid } = req?.user
    // 要对isDefault进行判断
    if (isDefault && isDefault == 1) {
        const sql = `update contact set isDefault=0 where user_id=?`
        // 执行sql
        pool.query(sql, [uid], (err, result) => {
            if (err) {
                console.log("contact/add接口", err);
                next(err)
                return
            }
            addContact(uid, name, tel, isDefault, next, res)
        })
    } else {
        addContact(uid, name, tel, isDefault, next, res)
    }
})

/**
 * 获取默认联系人接口
 * url: http://localhost:3000/contact/get
 * method: get
 */
router.get('/get', (req, res, next) => {
    // 获取用户uid
    let { uid } = req?.user
    // 编写sql
    const sql = `select * from contact where user_id=? and isDefault=1`
    pool.query(sql, [uid], (err, result) => {
        if (err) {
            console.log("contact/get接口", err);
            next(err)
            return
        }
        if (result && result.length > 0) {
            res.send(Response.success(result, '联系人信息查询成功！'))
        } else {
            res.send(Response.error('联系人信息查询失败！'))
        }
    })
})

/**
 * 根据用户id查询联系人接口
 * url: http://localhost:3000/contact/getAll
 */
router.get('/getAll', (req, res, next) => {
    // 获取用户uid
    let { uid } = req?.user
    // 编写sql
    const sql = `select * from contact where user_id=?`
    pool.query(sql, [uid],(err, result) => {
        if (err) {
            console.log("contact/getAll接口", err);
            next(err)
            return
        }
        if (result && result.length > 0) {
            res.send(Response.success(result, '联系人信息查询成功！'))
        } else {
            res.send(Response.error('联系人信息查询失败！'))
        }
    })
})

/**
 * 设置默认联系人
 * url： http://localhost:3000/contact/update/:id
 */
router.put('/update/:id',(req,res,next) => {
    // 获取联系人id
    let {id} = req?.params
    // 获取用户的id
    let {uid} = req?.user
    // 利用排他思想，先将这个用户下所有联系人设置为非默认，再将某一个联系人设置为默认
    const sql1 = `update contact set isDefault=0 where user_id=?`
    pool.query(sql1,[uid], (err,result) =>{
        if (err) {
            console.log("contact/update接口", err);
            next(err)
            return
        }
        const sql2 = `update contact set isDefault=1 where id=?`
        pool.query(sql2,[id],(err2,result2) =>{
            if (err) {
                console.log("contact/update接口", err2);
                next(err)
                return
            }
            if (result.affectedRows > 0) {
                res.send(Response.success(null, '默认联系人设置成功！'))
            } else {
                res.send(Response.error('默认联系人设置失败！'))
            }
        })
    })
})

// 封装的添加联系人方法
function addContact(uid, name, tel, isDefault, next, res) {
    const sql = `insert into contact(user_id,name,tel,isDefault) value(?,?,?,?)`
    // 执行sql
    pool.query(sql, [uid, name, tel, isDefault], (err, result) => {
        if (err) {
            console.log("contact/add接口", err)
            next(err)
            return
        }
        if (result.affectedRows > 0) {
            res.send(Response.success(null, '添加联系人成功！'))
        } else {
            res.send(Response.error('联系人添加失败！'))
        }
    })
}

module.exports = router


